--SEQUENCIA PARA ID DE ALUMNO
CREATE SEQUENCE AUTO_IDALUMNO INCREMENT BY 1 MINVALUE 10000001;

--PROCEDIMIENTOS PARA DAR DE ALTA A UN ALUMNO
CREATE OR REPLACE PROCEDURE ALTA_ALUMNO
(CURP$ IN VARCHAR2,NOMBREALU$ IN VARCHAR2,APELLIDOP$ IN VARCHAR2,APELLIDOM$ IN VARCHAR2,SEXO$ IN CHAR,FECHANAC$ IN DATE,ESTADO$ IN VARCHAR2,MUNICIPIO$ IN VARCHAR2,RFC$ IN CHAR)
AS
	AUTO_IDALUMNO_AUX 	NUMBER(8);
BEGIN
	IF TRUNC(MONTHS_BETWEEN(SYSDATE,FECHANAC$),2) > 24 THEN		
		SELECT AUTO_IDALUMNO.NEXTVAL INTO AUTO_IDALUMNO_AUX FROM DUAL;
		INSERT INTO ALUMNO(IDALUMNO,CURP,NOMBREALU,APELLIDOP,APELLIDOM,SEXO,FECHANAC,ESTADO,MUNICIPIO,RFC)
		VALUES(AUTO_IDALUMNO_AUX,CURP$,NOMBREALU$,APELLIDOP$,APELLIDOM$,SEXO$,FECHANAC$,ESTADO$,MUNICIPIO$,RFC$);
		DBMS_OUTPUT.PUT_LINE('ALUMNO AGREGADO: '||AUTO_IDALUMNO_AUX);
		COMMIT;
	ELSE
		DBMS_OUTPUT.PUT_LINE('FECHA DE NACIMIENTO INVALIDA');
	END IF;
END ALTA_ALUMNO;
/

--PROCEDIMIENTOS PARA DAR DE BAJA A UN ALUMNO
CREATE OR REPLACE PROCEDURE BAJA_ALUMNO(IDALUMNO$ IN NUMBER)
AS
BEGIN
	DELETE FROM ALUMNO WHERE IDALUMNO=IDALUMNO$;
	IF SQL%NOTFOUND THEN
		DBMS_OUTPUT.PUT_LINE('NO SE ELIMINÓ ALUMNO ALGUNO');
	ELSE
		DBMS_OUTPUT.PUT_LINE('HA SIDO ELIMINADO EL ALUMNO');
		COMMIT;
	END IF;
END BAJA_ALUMNO;
/

--PROCEDIMIENTOS PARA ACTUALIZAR A UN ALUMNO
CREATE OR REPLACE PROCEDURE ACTUALIZA_ALUMNO
(IDALUMNO$ IN NUMBER,CURP$ IN VARCHAR2,NOMBREALU$ IN VARCHAR2,APELLIDOP$ IN VARCHAR2,APELLIDOM$ IN VARCHAR2,SEXO$ IN CHAR,FECHANAC$ IN DATE,ESTADO$ IN VARCHAR2,MUNICIPIO$ IN VARCHAR2,RFC$ IN CHAR)
AS
BEGIN
	IF TRUNC(MONTHS_BETWEEN(SYSDATE,FECHANAC$),2) > 24 THEN	
		UPDATE ALUMNO SET CURP=CURP$,NOMBREALU=NOMBREALU$,APELLIDOP=APELLIDOP$,APELLIDOM=APELLIDOM$,SEXO=SEXO$,FECHANAC=FECHANAC$,ESTADO=ESTADO$,MUNICIPIO=MUNICIPIO$,RFC=RFC$
			WHERE IDALUMNO=IDALUMNO$;
		IF SQL%NOTFOUND THEN
			DBMS_OUTPUT.PUT_LINE('NO EXISTE EL ALUMNO A ACTUALIZAR');
		ELSE
			DBMS_OUTPUT.PUT_LINE('SE ACTUALIZÓ EL ALUMNO');
			COMMIT;
		END IF;
	ELSE
		DBMS_OUTPUT.PUT_LINE('FECHA DE NACIMIENTO INVALIDA');
	END IF;	
END ACTUALIZA_ALUMNO;
/
